home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2002 #11
/
Amiga Plus CD - 2002 - No. 11.iso
/
Tools
/
ShareMailGiftware
/
AmigaTalk
/
system
/
DosFlags.st
< prev
next >
Wrap
Text File
|
2002-10-27
|
52KB
|
1,240 lines
"----------------------------------------------------------------------"
" I would prefer to have only one large Dictionary of all AmigaDOS "
" flags & tags, but since Little Smalltalk only uses 8-bit bytecodes, "
" a Dictionary is limitied to 256 entries, so I had to divide the flags"
" into several smaller dictionaries. You can use this one Class to "
" reference ALL the components using the getXX: methods (jts). "
" This Class is a Singleton-class. "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
"----------------------------------------------------------------------"
Class DosSystem :Dictionary
! uniqueInstance dateTime aslFlags exAllFlags dosFlags dosErrors dosPackets
dosFHFlags dosNotify dosRDArgs dosRecord dosStdio dosVar dosHunks
!
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
dateTime <- DosDateTimeFlags new.
aslFlags <- DosASLFlags new.
exAllFlags <- DosExAllFlags new.
dosFlags <- DosFlags new.
dosErrors <- DosErrors new.
dosPackets <- DosPackets new.
dosFHFlags <- DosFH new.
dosNotify <- DosNotifyFlags new.
dosRDArgs <- DosRDArgsFlags new.
dosRecord <- DosRecordFlags new.
dosStdio <- DosStdIOFlags new.
dosVar <- DosVarFlags new.
dosHunks <- DosHunks new.
].
^ self "or ^ uniqueInstance??"
|
getDateTime: indexSymbol
^ dateTime at: indexSymbol
|
getASLFlag: indexSymbol
^ aslFlags at: indexSymbol
|
getExAllFlag: indexSymbol
^ exAllFlags at: indexSymbol
|
getDosFlag: indexSymbol
^ dosFlags at: indexSymbol
|
getDosError: indexSymbol
^ dosErrors at: indexSymbol
|
getDosPacket: indexSymbol
^ dosPackets at: indexSymbol
|
getDosFHFlag: indexSymbol
^ dosFHFlags at: indexSymbol
|
getDosNotify: indexSymbol
^ dosNotify at: indexSymbol
|
getDosRDArg: indexSymbol
^ dosRDArgs at: indexSymbol
|
getDosRecord: indexSymbol
^ dosRecord at: indexSymbol
|
getDosStdio: indexSymbol
^ dosStdio at: indexSymbol
|
getDosVar: indexSymbol
^ dosVar at: indexSymbol
|
getDosHunk: indexSymbol
^ dosHunks at: indexSymbol
]
"----------------------------------------------------------------------"
" DosASLFlags Class implements flags & tags used by the AmigaDOS "
" functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getASLFlag: #DDF_PatternBit' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosASLFlags :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
" dos/DosASL.h flags: "
self at: #APF_DOWILD put: 1. " User option ALL "
self at: #APF_ITSWILD put: 2. " Set by MatchFirst, used by MatchNext "
self at: #APF_DODIR put: 4. " Set if a Dir node should be entered "
self at: #APF_DIDDIR put: 8. " Bit is SET for an 'expired' dir node "
self at: #APF_NOMEMERR put: 16. " Set on memory error "
self at: #APF_DODOT put: 32. " If set, allow conv'n of '.' toCurrentDir "
self at: #APF_DirChanged put: 64. " an_Lock changed since last MatchNext call "
self at: #APF_FollowHLinks put: 128. " follow hardlinks on a DODIR. "
self at: #DDF_PatternBit put: 1.
self at: #DDF_ExaminedBit put: 2.
self at: #DDF_Completed put: 4.
self at: #DDF_AllBit put: 8.
self at: #DDF_Single put: 16.
" Constants used by wildcard routines, these are the pre-parsed tokens
* referred to by pattern match. It is not necessary for you to do
* anything about these, matchFirst: & matchNext handle all these for you.
"
self at: #P_ANY put: 16r80. " Token for '*' or '#? "
self at: #P_SINGLE put: 16r81. " Token for '?' "
self at: #P_ORSTART put: 16r82. " Token for '(' "
self at: #P_ORNEXT put: 16r83. " Token for '|' "
self at: #P_OREND put: 16r84. " Token for ')' "
self at: #P_NOT put: 16r85. " Token for '~' "
self at: #P_NOTEND put: 16r86.
self at: #P_NOTCLASS put: 16r87. " Token for '^' "
self at: #P_CLASS put: 16r88. " Token for '[]' "
self at: #P_REPBEG put: 16r89. " Token for '[' "
self at: #P_REPEND put: 16r8A. " Token for ']' "
self at: #P_STOP put: 16r8B. " token to force end of evaluation "
" Values for an_Status, NOTE: These are the actual bit numbers: "
self at: #COMPLEX_BIT put: 1. " Parsing complex pattern "
self at: #EXAMINE_BIT put: 2. " Searching directory "
].
^ self "or ^ uniqueInstance??"
]
"----------------------------------------------------------------------"
" DosExAllFlags Class implements exAll flags & tags used by the "
" AmigaDOS functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getExAllFlag: #ED_NAME' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosExAllFlags :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
" dos/ExAll.h flags: "
" NOTE: V37 dos.library, when doing ExAll() emulation, and V37 filesystems
* will return an error if passed ED_OWNER. If you get ERROR_BAD_NUMBER,
* retry with ED_COMMENT to get everything but owner info. All filesystems
* supporting ExAll() must support through ED_COMMENT, and must check Type
* and return ERROR_BAD_NUMBER if they don't support the type.
"
" values that can be passed for what data you want from ExAll()
* each higher value includes those below it (numerically)
* you MUST choose one of these values
"
self at: #ED_NAME put: 1.
self at: #ED_TYPE put: 2. " Name and Type "
self at: #ED_SIZE put: 3. " Name, Type & Size "
self at: #ED_PROTECTION put: 4. " Name, Type, Size & Protection bits "
self at: #ED_DATE put: 5.
self at: #ED_COMMENT put: 6.
self at: #ED_OWNER put: 7. " The whole enchilada! "
].
^ self "or ^ uniqueInstance??"
]
"----------------------------------------------------------------------"
" DosFlags Class implements Dos & DosExtens flags & tags used by the "
" AmigaDOS functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getDosFlag: #SHARED_LOCK' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosFlags :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateInitializeDictionary "Too big to be in a Block:"
" dos/dos.h: flags: "
self at: #DOSFALSE put: 0.
self at: #DOSTRUE put: -1.
self at: #MODE_OLDFILE put: 1005. " Open existing file as read/write "
self at: #MODE_NEWFILE put: 1006. " Open freshly created file read/write "
self at: #MODE_READWRITE put: 1004. " Open old file w/shared lock "
" Relative position to seekFile: "
self at: #OFFSET_BEGINNING put: -1. " relative to Beginning Of File "
self at: #OFFSET_CURRENT put: 0. " relative to Current file position "
self at: #OFFSET_END put: 1. " relative to End Of File "
" Passed as type to lock: "
self at: #SHARED_LOCK put: -2. " File is readable by others "
self at: #ACCESS_READ put: -2. " Synonym "
self at: #EXCLUSIVE_LOCK put: -1. " No other access allowed "
self at: #ACCESS_WRITE put: -1. " Synonym "
self at: #TICKS_PER_SECOND put: 50. " Number of ticks in one second "
self at: #FIBF_OTR_READ put: 16r8000. " Other: file is readable "
self at: #FIBF_OTR_WRITE put: 16r4000. " Other: file is writable "
self at: #FIBF_OTR_EXECUTE put: 16r2000. " Other: file is executable "
self at: #FIBF_OTR_DELETE put: 16r1000. " Other: prevent file from being deleted "
self at: #FIBF_GRP_READ put: 16r800. " Group: file is readable "
self at: #FIBF_GRP_WRITE put: 16r400. " Group: file is writable "
self at: #FIBF_GRP_EXECUTE put: 16r200. " Group: file is executable "
self at: #FIBF_GRP_DELETE put: 16r100. " Group: prevent file from being deleted "
self at: #FIBF_HIDDEN put: 16r80. " file is hidden from casual scrutiny "
self at: #FIBF_SCRIPT put: 16r40. " file is a script (execute) file "
self at: #FIBF_PURE put: 16r20. " program is reentrant and rexecutable "
self at: #FIBF_ARCHIVE put: 16r10. " cleared whenever file is changed "
self at: #FIBF_READ put: 8. " File is readable "
self at: #FIBF_WRITE put: 4. " File is writeable "
self at: #FIBF_EXECUTE put: 2. " Executable by a Shell "
self at: #FIBF_DELETE put: 1. " prevent file from being deleted "
self at: #FAULT_MAX put: 82. " Maximum length of falut string "
" ID stands for InfoData, Disk States: "
self at: #ID_WRITE_PROTECTED put: 80. " Disk is write protected "
self at: #ID_VALIDATING put: 81. " Disk is currently being validated "
self at: #ID_VALIDATED put: 82. " Disk is consistent and writeable "
" Disk types: "
self at: #ID_NO_DISK_PRESENT put: -1.
self at: #ID_UNREADABLE_DISK put: 16r42414400. " 'BAD\0' "
self at: #ID_DOS_DISK put: 16r444F5300. " 'DOS\0' "
self at: #ID_FFS_DISK put: 16r444F5301. " 'DOS\1' "
self at: #ID_INTER_DOS_DISK put: 16r444F5302. " 'DOS\2' "
self at: #ID_INTER_FFS_DISK put: 16r444F5303. " 'DOS\3' "
self at: #ID_FASTDIR_DOS_DISK put: 16r444F5304. " 'DOS\4' "
self at: #ID_FASTDIR_FFS_DISK put: 16r444F5305. " 'DOS\5' "
self at: #ID_NOT_REALLY_DOS put: 16r4E444F53. " 'NDOS' "
self at: #ID_KICKSTART_DISK put: 16r4B49434B. " 'KICK' "
self at: #ID_MSDOS_DISK put: 16r4D534400. " 'MSD\0' "
" setSignal( 0, 0 ) & SIGBREAKF_CTRL_C != false, then cleanup_and_exit() "
self at: #SIGBREAKF_CTRL_C put: 16r1000.
self at: #SIGBREAKF_CTRL_D put: 16r2000.
self at: #SIGBREAKF_CTRL_E put: 16r4000.
self at: #SIGBREAKF_CTRL_F put: 16r8000.
" Values returned by sameLock: "
self at: #LOCK_DIFFERENT put: -1.
self at: #LOCK_SAME put: 0.
self at: #LOCK_SAME_VOLUME put: 1. " locks are on same volume "
" types for changeMode: "
self at: #CHANGE_LOCK put: 0.
self at: #CHANGE_FH put: 1.
" Values for makeLink: "
self at: #LINK_HARD put: 0.
self at: #LINK_SOFT put: 1. " softlinks are not fully supported yet "
" values returned by readItem: "
self at: #ITEM_EQUAL put: -2. " '=' Symbol "
self at: #ITEM_ERROR put: -1. " error "
self at: #ITEM_NOTHING put: 0. " *N, ;, endstreamch "
self at: #ITEM_UNQUOTED put: 1. " unquoted item "
self at: #ITEM_QUOTED put: 2. " quoted item "
" types for allocDosObject & freeDosObject: "
self at: #DOS_FILEHANDLE put: 0. " few people should use this "
self at: #DOS_EXALLCONTROL put: 1. " Must be used to allocate exAllControl! "
self at: #DOS_FIB put: 2. " For FileInfoBlock "
self at: #DOS_STDPKT put: 3. " for doing packet-level I/O "
self at: #DOS_CLI put: 4. " for shell-writers, etc "
self at: #DOS_RDARGS put: 5. " for ReadArgs if you pass it in "
" dos/DosExtens.h flags: "
" Flags for process->pr_Flags "
self at: #PRF_FREESEGLIST put: 1.
self at: #PRF_FREECURRDIR put: 2.
self at: #PRF_FREECLI put: 4.
self at: #PRF_CLOSEINPUT put: 8.
self at: #PRF_CLOSEOUTPUT put: 16.
self at: #PRF_FREEARGS put: 32.
self at: #RNF_WILDSTAR put: 16r1000000. " for rootNode"
" Segment use codes: "
self at: #CMD_SYSTEM put: -1.
self at: #CMD_INTERNAL put: -2.
self at: #CMD_DISABLED put: -999.
" definitions for dl_Type "
self at: #DLT_DEVICE put: 0.
self at: #DLT_DIRECTORY put: 1. " assign "
self at: #DLT_VOLUME put: 2.
self at: #DLT_LATE put: 3. " late-binding assign "
self at: #DLT_NONBINDING put: 4. " non-binding assign "
self at: #DLT_PRIVATE put: -1. " for internal use only "
" definitions for (DevProc structure) dvp_Flags "
self at: #DVPF_UNLOCK put: 1. " PRIVATE! "
self at: #DVPF_ASSIGN put: 2.
" Flags to be passed to lockDosList:, etc "
self at: #LDF_DEVICES put: 4.
self at: #LDF_VOLUMES put: 8.
self at: #LDF_ASSIGNS put: 16.
self at: #LDF_ENTRY put: 32.
self at: #LDF_DELETE put: 64.
" you MUST specify one of LDF_READ or LDF_WRITE "
self at: #LDF_READ put: 1.
self at: #LDF_WRITE put: 2.
" actually all but LDF_ENTRY (which is used for internal locking) "
self at: #LDF_ALL put: 28. "LDF_DEVICES+LDF_VOLUMES+LDF_ASSIGNS"
" error report types for ErrorReport() "
self at: #REPORT_STREAM put: 0. " a stream "
self at: #REPORT_TASK put: 1. " a process - unused "
self at: #REPORT_LOCK put: 2. " a lock "
self at: #REPORT_VOLUME put: 3. " a volume node "
self at: #REPORT_INSERT put: 4. " please insert volume "
" types for initial packets to shells from run/newcli/execute/system. "
" For shell-writers only "
self at: #RUN_EXECUTE put: -1.
self at: #RUN_SYSTEM put: -2.
self at: #RUN_SYSTEM_ASYNCH put: -3.
" Types for fib_DirEntryType. NOTE that both USERDIR and ROOT are
* directories, and that directory/file checks should use < 0 and >= 0.
* This is not necessarily exhaustive! Some handlers may use other
* values as needed, though < 0 and >= 0 should remain as supported as
* possible.
"
self at: #ST_ROOT put: 1.
self at: #ST_USERDIR put: 2.
self at: #ST_SOFTLINK put: 3. " looks like dir, but may point to a file! "
self at: #ST_LINKDIR put: 4. " hard link to dir "
self at: #ST_FILE put: -3. " must be negative for FIB! "
self at: #ST_LINKFILE put: -4. " hard link to file "
self at: #ST_PIPEFILE put: -5. " for pipes that support ExamineFH "
" definitions for the System() call "
self at: #SYS_Input put: 16r80000021. " specifies the input filehandle "
self at: #SYS_Output put: 16r80000022. " specifies the output filehandle "
self at: #SYS_Asynch put: 16r80000023. " run asynch, close i/o on exit(!) "
self at: #SYS_UserShell put: 16r80000024. " send to user shell instead of boot shell "
self at: #SYS_CustomShell put: 16r80000025. " send to a specific shell (data is name) "
" definitions for the createNewProc: method.
* you MUST specify one of NP_Seglist or NP_Entry. All else is optional.
"
self at: #NP_Seglist put: 16r80001001. " seglist of code to run for the process "
self at: #NP_FreeSeglist put: 16r80001002. " free seglist on exit - only valid for NP_Seglist. Default is TRUE. "
self at: #NP_Entry put: 16r80001003. " entry point to run - mutually exclusive with NP_Seglist! "
self at: #NP_Input put: 16r80001004. " filehandle - default is Open('NIL:'...) "
self at: #NP_Output put: 16r80001005. " filehandle - default is Open('NIL:'...) "
self at: #NP_CloseInput put: 16r80001006. " close input filehandle on exit default TRUE "
self at: #NP_CloseOutput put: 16r80001007. " close output filehandle on exit default TRUE "
self at: #NP_Error put: 16r80001008. " filehandle - default is Open('NIL:'...) "
self at: #NP_CloseError put: 16r80001009. " close error filehandle on exit default TRUE "
self at: #NP_CurrentDir put: 16r8000100A. " lock - default is parent's current dir "
self at: #NP_StackSize put: 16r8000100B. " stacksize for process - default 4000 "
self at: #NP_Name put: 16r8000100C. " name for process - default 'New Process'"
self at: #NP_Priority put: 16r8000100D. " priority - default same as parent "
self at: #NP_ConsoleTask put: 16r8000100E. " consoletask - default same as parent "
self at: #NP_WindowPtr put: 16r8000100F. " window ptr - default is same as parent "
self at: #NP_HomeDir put: 16r80001010. " home directory - default curr home dir "
self at: #NP_CopyVars put: 16r80001011. " boolean to copy local vars-default TRUE "
self at: #NP_Cli put: 16r80001012. " create cli structure - default FALSE "
self at: #NP_Path put: 16r80001013. " path - default is copy of parents path "
" only valid if a cli process! "
self at: #NP_CommandName put: 16r80001014. " commandname - valid only for CLI "
self at: #NP_Arguments put: 16r80001015. " cstring of arguments - passed with str in a0, length in d0. "
self at: #NP_NotifyOnDeath put: 16r80001016. " notify parent on death - default FALSE "
self at: #NP_Synchronous put: 16r80001017. " don't return until process finishes - "
self at: #NP_ExitCode put: 16r80001018. " code to be called on process exit "
self at: #NP_ExitData put: 16r80001019. " optional argument for NP_EndCode rtn - "
" tags for AllocDosObject "
self at: #ADO_FH_Mode put: 16r80002001. " for type DOS_FILEHANDLE only! "
" sets up FH for mode specified.
* This can make a big difference for buffered
* files.
"
" The following are for DOS_CLI.
* If you do not specify these, dos will use it's preferred values
* which may change from release to release. The BPTRs to these
* will be set up correctly for you. Everything will be zero,
* except cli_FailLevel (10) and cli_Background (DOSTRUE).
* NOTE: You may also use these 4 tags with CreateNewProc.
"
self at: #ADO_DirLen put: 16r80002002. " size in bytes for current dir buffer "
self at: #ADO_CommNameLen put: 16r80002003. " size in bytes for command name buffer "
self at: #ADO_CommFileLen put: 16r80002004. " size in bytes for command file buffer "
self at: #ADO_PromptLen put: 16r80002005 " size in bytes for the prompt buffer "
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
self privateInitializeDictionary
].
^ self "or ^ uniqueInstance??"
]
"----------------------------------------------------------------------"
" DosErrors Class implements error number tags used by the AmigaDOS "
" functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getDosError: #ERROR_NO_FREE_STORE' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosErrors :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateInitializeDictionary "Too big to be in a Block:"
" Special error codes for ErrorReport() "
self at: #ABORT_DISK_ERROR put: 296. " Read/write error "
self at: #ABORT_BUSY put: 288. " You MUST replace... "
" Error codes from IoErr(), etc. "
self at: #ERROR_NO_FREE_STORE put: 103.
self at: #ERROR_TASK_TABLE_FULL put: 105.
self at: #ERROR_BAD_TEMPLATE put: 114.
self at: #ERROR_BAD_NUMBER put: 115.
self at: #ERROR_REQUIRED_ARG_MISSING put: 116.
self at: #ERROR_KEY_NEEDS_ARG put: 117.
self at: #ERROR_TOO_MANY_ARGS put: 118.
self at: #ERROR_UNMATCHED_QUOTES put: 119.
self at: #ERROR_LINE_TOO_LONG put: 120.
self at: #ERROR_FILE_NOT_OBJECT put: 121.
self at: #ERROR_INVALID_RESIDENT_LIBRARY put: 122.
self at: #ERROR_NO_DEFAULT_DIR put: 201.
self at: #ERROR_OBJECT_IN_USE put: 202.
self at: #ERROR_OBJECT_EXISTS put: 203.
self at: #ERROR_DIR_NOT_FOUND put: 204.
self at: #ERROR_OBJECT_NOT_FOUND put: 205.
self at: #ERROR_BAD_STREAM_NAME put: 206.
self at: #ERROR_OBJECT_TOO_LARGE put: 207.
self at: #ERROR_ACTION_NOT_KNOWN put: 209.
self at: #ERROR_INVALID_COMPONENT_NAME put: 210.
self at: #ERROR_INVALID_LOCK put: 211.
self at: #ERROR_OBJECT_WRONG_TYPE put: 212.
self at: #ERROR_DISK_NOT_VALIDATED put: 213.
self at: #ERROR_DISK_WRITE_PROTECTED put: 214.
self at: #ERROR_RENAME_ACROSS_DEVICES put: 215.
self at: #ERROR_DIRECTORY_NOT_EMPTY put: 216.
self at: #ERROR_TOO_MANY_LEVELS put: 217.
self at: #ERROR_DEVICE_NOT_MOUNTED put: 218.
self at: #ERROR_SEEK_ERROR put: 219.
self at: #ERROR_COMMENT_TOO_BIG put: 220.
self at: #ERROR_DISK_FULL put: 221.
self at: #ERROR_DELETE_PROTECTED put: 222.
self at: #ERROR_WRITE_PROTECTED put: 223.
self at: #ERROR_READ_PROTECTED put: 224.
self at: #ERROR_NOT_A_DOS_DISK put: 225.
self at: #ERROR_NO_DISK put: 226.
self at: #ERROR_NO_MORE_ENTRIES put: 232.
self at: #ERROR_IS_SOFT_LINK put: 233.
self at: #ERROR_OBJECT_LINKED put: 234.
self at: #ERROR_BAD_HUNK put: 235.
self at: #ERROR_NOT_IMPLEMENTED put: 236.
self at: #ERROR_RECORD_NOT_LOCKED put: 240.
self at: #ERROR_LOCK_COLLISION put: 241.
self at: #ERROR_LOCK_TIMEOUT put: 242.
self at: #ERROR_UNLOCK_ERROR put: 243.
" error codes 303-305 are defined in dosasl.h "
" These are the return codes used by convention by AmigaDOS commands
* See FAILAT and IF for relevance to EXECUTE (script) files
"
self at: #RETURN_OK put: 0. " No problems, success "
self at: #RETURN_WARN put: 5. " A warning only "
self at: #RETURN_ERROR put: 10. " Something wrong "
self at: #RETURN_FAIL put: 20. " Complete or severe failure "
" Returns from matchFirst: & matchNext:
* You can also get dos error returns, such as ERROR_NO_MORE_ENTRIES,
* these are in the dos.h file.
"
self at: #ERROR_BUFFER_OVERFLOW put: 303. " User or internal buffer overflow "
self at: #ERROR_BREAK put: 304. " A break character was received "
self at: #ERROR_NOT_EXECUTABLE put: 305 " A file has E bit cleared "
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
self privateInitializeDictionary
].
^ self "or ^ uniqueInstance??"
]
"----------------------------------------------------------------------"
" DosPackets Class implements flags & tags used by the AmigaDOS "
" functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getDosPacket: #ACTION_WRITE' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosPackets :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateInitializeDictionary "Too big to be in a Block:"
" Packet types "
self at: #ACTION_NIL put: 0.
self at: #ACTION_STARTUP put: 0.
self at: #ACTION_GET_BLOCK put: 2. " OBSOLETE "
self at: #ACTION_SET_MAP put: 4.
self at: #ACTION_DIE put: 5.
self at: #ACTION_EVENT put: 6.
self at: #ACTION_CURRENT_VOLUME put: 7.
self at: #ACTION_LOCATE_OBJECT put: 8.
self at: #ACTION_RENAME_DISK put: 9.
self at: #ACTION_WRITE put: 16r57. " 'W' "
self at: #ACTION_READ put: 16r52. " 'R' "
self at: #ACTION_FREE_LOCK put: 15.
self at: #ACTION_DELETE_OBJECT put: 16.
self at: #ACTION_RENAME_OBJECT put: 17.
self at: #ACTION_MORE_CACHE put: 18.
self at: #ACTION_COPY_DIR put: 19.
self at: #ACTION_WAIT_CHAR put: 20.
self at: #ACTION_SET_PROTECT put: 21.
self at: #ACTION_CREATE_DIR put: 22.
self at: #ACTION_EXAMINE_OBJECT put: 23.
self at: #ACTION_EXAMINE_NEXT put: 24.
self at: #ACTION_DISK_INFO put: 25.
self at: #ACTION_INFO put: 26.
self at: #ACTION_FLUSH put: 27.
self at: #ACTION_SET_COMMENT put: 28.
self at: #ACTION_PARENT put: 29.
self at: #ACTION_TIMER put: 30.
self at: #ACTION_INHIBIT put: 31.
self at: #ACTION_DISK_TYPE put: 32.
self at: #ACTION_DISK_CHANGE put: 33.
self at: #ACTION_SET_DATE put: 34.
self at: #ACTION_SCREEN_MODE put: 994.
self at: #ACTION_READ_RETURN put: 1001.
self at: #ACTION_WRITE_RETURN put: 1002.
self at: #ACTION_SEEK put: 1008.
self at: #ACTION_FINDUPDATE put: 1004.
self at: #ACTION_FINDINPUT put: 1005.
self at: #ACTION_FINDOUTPUT put: 1006.
self at: #ACTION_END put: 1007.
self at: #ACTION_SET_FILE_SIZE put: 1022. " fast file system only in 1.3 "
self at: #ACTION_WRITE_PROTECT put: 1023. " fast file system only in 1.3 "
self at: #ACTION_SAME_LOCK put: 40.
self at: #ACTION_CHANGE_SIGNAL put: 995.
self at: #ACTION_FORMAT put: 1020.
self at: #ACTION_MAKE_LINK put: 1021.
self at: #ACTION_READ_LINK put: 1024.
self at: #ACTION_FH_FROM_LOCK put: 1026.
self at: #ACTION_IS_FILESYSTEM put: 1027.
self at: #ACTION_CHANGE_MODE put: 1028.
self at: #ACTION_COPY_DIR_FH put: 1030.
self at: #ACTION_PARENT_FH put: 1031.
self at: #ACTION_EXAMINE_ALL put: 1033.
self at: #ACTION_EXAMINE_FH put: 1034.
self at: #ACTION_LOCK_RECORD put: 2008.
self at: #ACTION_FREE_RECORD put: 2009.
self at: #ACTION_ADD_NOTIFY put: 4097.
self at: #ACTION_REMOVE_NOTIFY put: 4098.
" Added in V39: "
self at: #ACTION_EXAMINE_ALL_END put: 1035.
self at: #ACTION_SET_OWNER put: 1036.
" Tell a file system to serialize the current volume. This is typically
* done by changing the creation date of the disk. This packet does not
* take any arguments.
* NOTE: Be prepared to handle failure of this packet for V37 ROM
* filesystems.
"
self at: #ACTION_SERIALIZE_DISK put: 4200
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
self privateInitializeDictionary
].
^ self "or ^ uniqueInstance??"
]
"----------------------------------------------------------------------"
" DosFH Class implements FileHandler flags & tags used by the AmigaDOS "
" functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getDosFHFlag: #DE_INTERLEAVE' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosFH :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
" dos/FileHandler.h flags: "
" these are the offsets into the DiskEnvironment (struct DosEnvec) array
* DE_TABLESIZE is set to the number of longwords in the table minus 1
"
self at: #DE_TABLESIZE put: 0. " minimum value is 11 (includes NumBuffers) "
self at: #DE_SIZEBLOCK put: 1. " in longwords: standard value is 128 "
self at: #DE_SECORG put: 2. " not used; must be 0 "
self at: #DE_NUMHEADS put: 3. " # of heads (surfaces). drive specific "
self at: #DE_SECSPERBLK put: 4. " not used; must be 1 "
self at: #DE_BLKSPERTRACK put: 5. " blocks per track. drive specific "
self at: #DE_RESERVEDBLKS put: 6. " unavailable blocks at start. usually 2 "
self at: #DE_PREFAC put: 7. " not used; must be 0 "
self at: #DE_INTERLEAVE put: 8. " usually 0 "
self at: #DE_LOWCYL put: 9. " starting cylinder. typically 0 "
self at: #DE_UPPERCYL put: 10. " max cylinder. drive specific "
self at: #DE_NUMBUFFERS put: 11. " starting # of buffers. typically 5 "
self at: #DE_BUFMEMTYPE put: 12. " type of mem to allocate for buffers.
* 1 is public, 3 is chip, 5 is fast
"
self at: #DE_MAXTRANSFER put: 13. " Max number bytes to transfer at a time "
self at: #DE_MASK put: 14. " Address Mask to block out certain memory "
self at: #DE_BOOTPRI put: 15. " Boot priority for autoboot "
self at: #DE_DOSTYPE put: 16. " string showing filesystem type "
self at: #DE_BAUD put: 17. " Baud rate for serial handler "
self at: #DE_CONTROL put: 18. " Control word for handler/filesystem "
self at: #DE_BOOTBLOCKS put: 19. " Number of blocks containing boot code "
].
^ self "or ^ uniqueInstance??"
]
"----------------------------------------------------------------------"
" DosNotifyFlags Class implements Notify flags & tags used by the "
" AmigaDOS functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getDosNotify: #NOTIFY_CODE' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosNotifyFlags :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
" dos/Notify.h flags: "
" use of Class and code is discouraged for the time being - we might want to
* change things
"
self at: #NOTIFY_CLASS put: 16r40000000. " NotifyMessage Class "
self at: #NOTIFY_CODE put: 16r1234. " NotifyMessage Codes "
" --- NotifyRequest Flags ------------------------------------------------ "
self at: #NRF_SEND_MESSAGE put: 1.
self at: #NRF_SEND_SIGNAL put: 2.
self at: #NRF_WAIT_REPLY put: 8.
self at: #NRF_NOTIFY_INITIAL put: 16.
" do NOT set or remove NRF_MAGIC! Only for use by handlers! "
self at: #NRF_MAGIC put: 16r80000000.
" Flags reserved for private use by the handler: "
self at: #NR_HANDLER_FLAGS put: 16rFFFF0000
].
^ self "or ^ uniqueInstance??"
]
"----------------------------------------------------------------------"
" DosRDArgsFlags Class implements RDArgs flags & tags used by the "
" AmigaDOS functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getDosRDArg: #RDAF_STDIN' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosRDArgsFlags :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
" dos/RDArgs.h flags: "
self at: #RDAF_STDIN put: 1. " Use 'STDIN' rather than 'COMMAND LINE' "
self at: #RDAF_NOALLOC put: 2. " If set, do not allocate extra string spc"
self at: #RDAF_NOPROMPT put: 4. " Disable reprompting for string input. "
" Maximum number of template keywords which can be in a template passed
* to ReadArgs(). IMPLEMENTOR NOTE - must be a multiple of 4.
"
self at: #MAX_TEMPLATE_ITEMS put: 100.
" Maximum number of MULTIARG items returned by ReadArgs(), before
* an ERROR_LINE_TOO_LONG. These two limitations are due to stack
* usage. Applications should allow 'a lot' of stack to use ReadArgs().
"
self at: #MAX_MULTIARGS put: 128
].
^ self "or ^ uniqueInstance??"
]
"----------------------------------------------------------------------"
" DosRecordFlags Class implements Record flags & tags used by the "
" AmigaDOS functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getDosRecord: #REC_SHARED' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosRecordFlags :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
" dos/Record.h flags: "
" Modes for lockRecord: & lockRecords: "
self at: #REC_EXCLUSIVE put: 0.
self at: #REC_EXCLUSIVE_IMMED put: 1.
self at: #REC_SHARED put: 2.
self at: #REC_SHARED_IMMED put: 3.
].
^ self "or ^ uniqueInstance??"
]
"----------------------------------------------------------------------"
" DosStdIOFlags Class implements stdio flags & tags used by the "
" AmigaDOS functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getDosStdio: #BUF_LINE' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosStdIOFlags :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
" dos/stdio.h flags: "
" types for SetVBuf "
self at: #BUF_LINE put: 0. " flush on \n, etc "
self at: #BUF_FULL put: 1. " never flush except when needed "
self at: #BUF_NONE put: 2. " no buffering "
self at: #ENDSTREAMCH put: -1. " EOF return value "
].
^ self "or ^ uniqueInstance??"
]
"----------------------------------------------------------------------"
" DosVarFlags Class implements variable flags & tags used by the "
" AmigaDOS functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getDosVar: #LV_VAR' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosVarFlags :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
" dos/Var.h flags: "
" bit definitions for localVar->lv_Node.ln_Type: "
self at: #LV_VAR put: 0. " a variable "
self at: #LV_ALIAS put: 1. " an alias "
" to be or'ed into type: "
self at: #LVB_IGNORE put: 7. " ignore this entry on GetVar, etc "
self at: #LVF_IGNORE put: 16r80.
" definitions of flags passed to GetVar()/SetVar()/DeleteVar()
* bit defs to be OR'ed with the type:
* item will be treated as a single line of text unless BINARY_VAR is used
"
self at: #GVF_GLOBAL_ONLY put: 16r100.
self at: #GVF_LOCAL_ONLY put: 16r200.
self at: #GVF_BINARY_VAR put: 16r400.
self at: #GVF_DONT_NULL_TERM put: 16r800. " only with GVF_BINARY_VAR "
" this is only supported in >= V39 dos. V37 dos ignores this.
* this causes SetVar to affect ENVARC: as well as ENV:.
"
self at: #GVF_SAVE_VAR put: 16r1000. " only with GVF_GLOBAL_ONLY "
].
^ self "or ^ uniqueInstance??"
]
"----------------------------------------------------------------------"
" DosDateTimeFlags Class implements flags & tags used by the AmigaDOS "
" functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getDateTime: #FORMAT_DOS' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosDateTimeFlags :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
self at: #DTF_SUBST put: 16r1.
self at: #DTF_FUTURE put: 16r2.
self at: #FORMAT_DOS put: 16r0. " Date Formatting flags "
self at: #FORMAT_INT put: 16r1.
self at: #FORMAT_USA put: 16r2.
self at: #FORMAT_CDN put: 16r3.
self at: #FORMAT_MAX put: 16r3.
self at: #LEN_DATSTRING put: 16r10.
].
^ self "or ^ uniqueInstance??"
]
"----------------------------------------------------------------------"
" DosHunks Class implements hunk flags & tags used by the AmigaDOS "
" functions for AmigaTalk. This class is a Singleton-class. "
""
" Please read AmigaTalk:Help/ADos.guide for guidance on how to use the "
" methods of this Class -- it's really getting hard to document each "
" AmigaTalk Class in two or more places! "
""
" EXAMPLE: 'myFlag <- dosSystem getDosHunk: #HUNK_NAME' "
""
" ALL singleton classes MUST contain the following: "
""
" the methods: isSingleton AND privateSetup AND "
" uniqueInstance Class instance variable. "
" ---------------------------------------------------------------------"
Class DosHunks :Dictionary ! uniqueInstance !
[
isSingleton
^ true
|
privateNew ! newinstance !
newinstance <- super new.
^ newinstance
|
new
^ (self privateSetup)
|
privateInitializeDictionary "Too big to be in a Block:"
" dos/DosHunks.h flags: (NOT Currently used 31-Dec-2001)"
" hunk types "
self at: #HUNK_UNIT put: 999.
self at: #HUNK_NAME put: 1000.
self at: #HUNK_CODE put: 1001.
self at: #HUNK_DATA put: 1002.
self at: #HUNK_BSS put: 1003.
self at: #HUNK_RELOC32 put: 1004.
self at: #HUNK_ABSRELOC32 put: 1004.
self at: #HUNK_RELOC16 put: 1005.
self at: #HUNK_RELRELOC16 put: 1005.
self at: #HUNK_RELOC8 put: 1006.
self at: #HUNK_RELRELOC8 put: 1006.
self at: #HUNK_EXT put: 1007.
self at: #HUNK_SYMBOL put: 1008.
self at: #HUNK_DEBUG put: 1009.
self at: #HUNK_END put: 1010.
self at: #HUNK_HEADER put: 1011.
self at: #HUNK_OVERLAY put: 1013.
self at: #HUNK_BREAK put: 1014.
self at: #HUNK_DREL32 put: 1015.
self at: #HUNK_DREL16 put: 1016.
self at: #HUNK_DREL8 put: 1017.
self at: #HUNK_LIB put: 1018.
self at: #HUNK_INDEX put: 1019.
" Note: V37 loadSeg: uses 1015 (HUNK_DREL32) by mistake. This will continue
* to be supported in future versions, since HUNK_DREL32 is illegal in load files
* anyways. Future versions will support both 1015 and 1020, though anything
* that should be usable under V37 should use 1015.
"
self at: #HUNK_RELOC32SHORT put: 1020.
" see ext_xxx below. New for V39 (note that loadSeg: only handles RELRELOC32)."
self at: #HUNK_RELRELOC32 put: 1021.
self at: #HUNK_ABSRELOC16 put: 1022.
" Any hunks that have the HUNKB_ADVISORY bit set will be ignored if they
* aren't understood. When ignored, they're treated like HUNK_DEBUG hunks.
* NOTE: this handling of HUNKB_ADVISORY started as of V39 dos.library! If
* loading such executables is attempted under <V39 dos, it will fail with a
* bad hunk type.
"
self at: #HUNKF_ADVISORY put: 16r20000000.
self at: #HUNKF_CHIP put: 16r40000000.
self at: #HUNKF_FAST put: 16r80000000.
" hunk_ext sub-types "
self at: #EXT_SYMB put: 0. " symbol table "
self at: #EXT_DEF put: 1. " relocatable definition "
self at: #EXT_ABS put: 2. " Absolute definition "
self at: #EXT_RES put: 3. " no longer supported "
self at: #EXT_REF32 put: 129. " 32 bit absolute reference to symbol "
self at: #EXT_ABSREF32 put: 129.
self at: #EXT_COMMON put: 130. " 32 bit absolute reference to COMMON block "
self at: #EXT_ABSCOMMON put: 130.
self at: #EXT_REF16 put: 131. " 16 bit PC-relative reference to symbol "
self at: #EXT_RELREF16 put: 131.
self at: #EXT_REF8 put: 132. " 8 bit PC-relative reference to symbol "
self at: #EXT_RELREF8 put: 132.
self at: #EXT_DEXT32 put: 133. " 32 bit data relative reference "
self at: #EXT_DEXT16 put: 134. " 16 bit data relative reference "
self at: #EXT_DEXT8 put: 135. " 8 bit data relative reference "
" These are to support some of the '020 and up modes that are rarely used "
self at: #EXT_RELREF32 put: 136. " 32 bit PC-relative reference to symbol "
self at: #EXT_RELCOMMON put: 137. " 32 bit PC-relative ref' to COMMON block "
" for completeness... All 680x0's support this "
self at: #EXT_ABSREF16 put: 138. " 16 bit absolute reference to symbol "
" this only exists on '020's and above, in the (d8,An,Xn) address mode "
self at: #EXT_ABSREF8 put: 139 " 8 bit absolute reference to symbol "
|
privateSetup
(uniqueInstance isNil)
ifTrue: [uniqueInstance <- self privateNew.
self privateInitializeDictionary
].
^ self "or ^ uniqueInstance??"
]